// 确保只有一处类定义
#ifndef FILES_H
#define FILES_H
#include "header.cpp"
//  arduino 项目开发版选 Generic ESP8266 Module
class Files
// 父类（基类）
{
public:
  bool isOpen;
  Files() {
    // 确保文件系统已经开启
    if (!isOpen && !SPIFFS.begin()) {
      Serial.println("SPIFFS mount failed");
      SPIFFS.format();
      return;
    }
    isOpen = true;
  }
  bool writeString(String str, String file_name="/files.txt") {
    // 将字符串写入文件系统
    File file = SPIFFS.open(file_name, "w");
    if (!file) {
      Serial.println("Failed to open file for writing");
      return false;
    }
    file.println(str);
    return true;
  }
  bool writeJson(JSONVar jsonVar, String file_name="/files.txt") {
    if (jsonVar) {
      // 将字符串写入文件系统
      String str = JSON.stringify(jsonVar);
      return writeString(str);
    }
    return false;
  }
  JSONVar readJson(String file_name) {
    String str = readString(file_name);
    if (str) {
      return JSON.parse(str);
    }
    //  JSONVar parsed;
    // 解析 JSON 字符串
    JSONVar parsed;
    return parsed;
  }
  String readString(String file_name) {
    File dataFile = SPIFFS.open(file_name, "r");  //建立File对象用于从SPIFFS中读取文件
    //读取文件内容并且通过串口监视器输出文件信息
    String str = "";
    for (int i = 0; i < dataFile.size(); i++) {
      // Serial.print((char)dataFile.read());
      str = str + (char)dataFile.read();
    }
    dataFile.close();  //完成文件读取后关闭文件
    return str;
  }
};
#endif
